package com.jeecms.paytype.shengpay;

import java.util.Map;

import com.jeecms.pay.model.PayResource;

public class ShengpayService {

	public static String createPayForm(Map<String, String> paraPool) {
		ShengPayForm form = ShengHelper.getForm(paraPool);
		form = ShengHelper.signForm(form, PayResource.payclient.getProperty("sheng_sign_key"));
		// String test_url =
		// " http://mer.mas.sdo.com/web-acquire-channel/cashier.htm";
		String real_url = " http://mas.sdo.com/web-acquire-channel/cashier.htm";
		StringBuilder sb = new StringBuilder();

		sb.append("<form id=\"payform\" name=\"payform\" action=\"" + real_url + "\" method=\"post\">");
		sb.append("<input type=\"hidden\" name=\"BuyerContact\" value=\"" + form.getBuyerContact() + "\"/>");
		sb.append("<input type=\"hidden\" name=\"BuyerIp\" value=\"" + form.getBuyerIp() + "\"/>");
		sb.append("<input type=\"hidden\" name=\"Charset\" value=\"" + form.getCharset() + "\"/>");
		sb.append("<input type=\"hidden\" name=\"Ext1\" value=\"" + form.getExt1() + "\"/>");
		sb.append("<input type=\"hidden\" name=\"InstCode\" value=\"" + form.getInstCode() + "\"/>");
		sb.append("<input type=\"hidden\" name=\"MsgSender\" value=\"" + form.getMsgSender() + "\"/>");
		sb.append("<input type=\"hidden\" name=\"Name\" value=\"" + form.getName() + "\"/>");
		sb.append("<input type=\"hidden\" name=\"NotifyUrl\" value=\"" + form.getNotifyUrl() + "\"/>");
		sb.append("<input type=\"hidden\" name=\"OrderAmount\" value=\"" + form.getOrderAmount() + "\"/>");
		sb.append("<input type=\"hidden\" name=\"OrderNo\" value=\"" + form.getOrderNo() + "\"/>");
		sb.append("<input type=\"hidden\" name=\"OrderTime\" value=\"" + form.getOrderTime() + "\"/>");
		sb.append("<input type=\"hidden\" name=\"PageUrl\" value=\"" + form.getPageUrl() + "\"/>");
		sb.append("<input type=\"hidden\" name=\"PayType\" value=\"" + form.getPayType() + "\"/>");
		sb.append("<input type=\"hidden\" name=\"ProductName\" value=\"" + form.getProductName() + "\"/>");
		sb.append("<input type=\"hidden\" name=\"SendTime\" value=\"" + form.getSendTime() + "\"/>");
		sb.append("<input type=\"hidden\" name=\"SignMsg\" value=\"" + form.getSignMsg() + "\"/>");
		sb.append("<input type=\"hidden\" name=\"SignType\" value=\"" + form.getSignType() + "\"/>");
		sb.append("<input type=\"hidden\" name=\"Version\" value=\"" + form.getVersion() + "\"/>");

		// submit按钮控件请不要含有name属性
		// sb.append("<input type=\"submit\" value=\"pay\">");
		sb.append("</form>");
		sb.append("<script>document.forms['payform'].submit();</script>");

		return sb.toString();
	}

	private ShengpayService() {

	}

	/**
	 * 版本名称 Name 是 String(32) 版本名称,默认属性值为:B2CPayment<br>
	 * 版本号 Version 是 String(20) 版本号,默认属性值为: V4.1.1.1.1<br>
	 * 字符集 Charset 是 String(10) 字符集,支持GBK、UTF-8、GB2312,默认属性值为:UTF-8<br>
	 * 发送方标识 MsgSender 是 String(64) 由盛付通提供,默认为:商户号(由盛付通提供的6位正整数),用于盛付通判别请求方的身份<br>
	 * 发送支付请求时间 SendTime 否 String(14)
	 * 用户通过商户网站提交订单的支付时间,必须为14位正整数数字,格式为:yyyyMMddHHmmss,如:20110707112233<br>
	 * 商户订单号 OrderNo 是 String(50) 商户订单号,50个字符内、只允许使用数字、字母,确保在商户系统唯一<br>
	 * 支付金额 OrderAmount 是 String(14) 支付金额,必须大于0,包含2位小数<br>
	 * 如：OrderAmount=1.00<br>
	 * 商户订单提交时间 OrderTime 是 String(14)
	 * 商户提交用户订单时间,必须为14位正整数数字,格式为:yyyyMMddHHmmss,如:OrderTime=20110808112233<br>
	 * 
	 * 支付类型编码 PayType 否 String(10) 见附录7.1.1支付类型<br>
	 * 如:PayType=PT001 <br>
	 * 银行编码 InstCode 否 String(256)
	 * 见附录7.1.2综合网银编码列表,机构代码列表以逗号分隔,如：InstCode=ICBC,CMB<br>
	 * 浏览器回调地址 PageUrl 是 String(256)
	 * 客户端浏览器回调地址,支付成功后,将附带回调数据跳转到此页面,商户可以进行相关处理并显示给终端用户
	 * ,如:http://www.testpay.com/testpay.jsp<br>
	 * 商户后台回调地址 NotifyUrl 是 String(256)
	 * 服务端通知发货地址,支付成功后,盛付通将发送“支付成功”信息至该地址,通知商户发货
	 * ,商户收到信息后,需返回相应信息至盛付通,表明已收到发货通知。返回信息只能定义为
	 * “OK”（注意为大写英文字母）,返回其他信息均为失败,如:http://www.testpay.com/testpay.jsp<br>
	 * 商品名称 ProductName 否 String(56) 商品名称,如:ProductName=测试商品test<br>
	 * 支付人联系方式 BuyerContact 否 String(256) 字符串，手机号码或者邮箱地址<br>
	 * 买家IP地址 BuyerIp 否 String(20) 防钓鱼用,买家的ip地址<br>
	 * 扩展1 Ext1 否 String(128) 英文或中文字符串<br>
	 * 支付完成后，按照原样返回给商户<br>
	 * 签名类型 SignType 是 String(10) 签名类型,如：MD5<br>
	 * 签名串 SignMsg 是 String(1024) 签名结果<br>
	 */
}
